package com.zzyl.common.utils;

// 导入Apache PDFBox的核心类
import org.apache.pdfbox.pdmodel.PDDocument;  // 用于表示PDF文档
import org.apache.pdfbox.text.PDFTextStripper; // 用于从PDF中提取文本
import java.io.IOException;
import java.io.InputStream;

public class PDFUtil {

    /**
     * 将PDF文件内容转换为字符串
     * @param inputStream PDF文件的输入流
     * @return PDF中的文本内容，如果出错则返回null
     */
    public static String pdfToString(InputStream inputStream) {

        PDDocument document = null; // 用于加载PDF文档的对象

        try {
            // 1. 加载PDF文档
            // 使用PDFBox的PDDocument.load()方法从输入流加载PDF文档
            document = PDDocument.load(inputStream);

            // 2. 创建一个PDFTextStripper实例来提取文本
            // PDFTextStripper是PDFBox提供的工具类，用于从PDF中提取文本
            PDFTextStripper pdfStripper = new PDFTextStripper();

            // 3. 从PDF文档中提取文本
            // 调用PDFTextStripper的getText()方法，传入PDDocument对象，提取文本
            String text = pdfStripper.getText(document);
            return text;

        } catch (IOException e) {
            // 捕获并打印IO异常
            e.printStackTrace();
        } finally {
            // 4. 关闭PDF文档和输入流
            if (document != null) {
                try {
                    // 关闭PDDocument对象，释放资源
                    document.close();
                    // 关闭输入流，防止资源泄漏
                    inputStream.close();
                } catch (IOException e) {
                    // 捕获并打印关闭资源时的异常
                    e.printStackTrace();
                }
            }
        }
        // 如果出现异常，返回null
        return null;
    }
}